package com.kashow.injector.component;

import android.app.Activity;
import android.content.Context;

import com.kashow.injector.ContextLife;
import com.kashow.injector.PerFragment;
import com.kashow.injector.module.FragmentModule;
import com.kashow.ui.circle.CircleFragment;
import com.kashow.ui.circle.collection.CollectionFragment;
import com.kashow.ui.circle.publish.fragment.PublishCircleFragment;
import com.kashow.ui.circle.publish.fragment.cover.SelectCoverFragment;
import com.kashow.ui.circle.publish.fragment.music.SelectMusicFragment;
import com.kashow.ui.circle.publish.fragment.text.CircleTextFragment;
import com.kashow.ui.dialog.bottom.BottomFragment;
import com.kashow.ui.home.HomeFragment;
import com.kashow.ui.home.category.CategoryLiveFragment;
import com.kashow.ui.home.choice.ChoicesLiveFragment;
import com.kashow.ui.home.follow.FollowsLiveFragment;
import com.kashow.ui.home.subtheme.HomeSubThemeFragment;
import com.kashow.ui.live.comment.LiveCommentFragment;
import com.kashow.ui.live.commentteacher.CommentTeacherFragment;
import com.kashow.ui.live.detail.LiveDetailFragment;
import com.kashow.ui.live.push.question.TeacherQuestionFragment;
import com.kashow.ui.live.question.QuestionFragment;
import com.kashow.ui.live.room.sendgift.SendGiftFragment;
import com.kashow.ui.login.fragment.LoginFragment;
import com.kashow.ui.login.fragment.bdingphone.WXBdingPhoneFragment;
import com.kashow.ui.login.fragment.normallogin.NormalLoginFragment;
import com.kashow.ui.login.fragment.protocol.ProtocolFragment;
import com.kashow.ui.login.fragment.quicklogin.QuickLoginFragment;
import com.kashow.ui.login.fragment.register.RegisterFragment;
import com.kashow.ui.login.fragment.register.addnamesex.AddNameSexFragment;
import com.kashow.ui.login.fragment.register.addpassword.AddPassWordFragment;
import com.kashow.ui.login.fragment.register.changepassword.ChangePasswordFragment;
import com.kashow.ui.main.fragment.MainFragment;
import com.kashow.ui.message.MessageFragment;
import com.kashow.ui.message.MessagesFragment;
import com.kashow.ui.message.comment.CommentFragment;
import com.kashow.ui.message.comment.reply.CommentReplyFragment;
import com.kashow.ui.message.message.ChatListFragment;
import com.kashow.ui.message.message.chat.ChatFragment;
import com.kashow.ui.message.official.OfficialFragment;
import com.kashow.ui.message.star.MessageStarFragment;
import com.kashow.ui.paying.PayingFragment;
import com.kashow.ui.person.PersonFragment;
import com.kashow.ui.person.authentication.AuthenticationFragment;
import com.kashow.ui.person.authentication.SelfIntroduction.SelfIntroductionFragment;
import com.kashow.ui.person.authentication.autherror.AuthErrorFragment;
import com.kashow.ui.person.authentication.authstatus.AuthStatusFragment;
import com.kashow.ui.person.buyed.BuyedLiveFragment;
import com.kashow.ui.person.level.LevelFragment;
import com.kashow.ui.person.publish.PublishedFragment;
import com.kashow.ui.person.publish.article.ArticleFragment;
import com.kashow.ui.person.publish.course.CourseFragment;
import com.kashow.ui.person.publish.course.homeworklist.HomeworkListFragment;
import com.kashow.ui.person.publish.course.homeworklist.createhomework.CreateHomeworkFragment;
import com.kashow.ui.person.publish.course.homeworklist.homeworkdetails.HomeworkDetailsFragment;
import com.kashow.ui.person.publish.describeliving.DescribeLivingFragment;
import com.kashow.ui.person.publish.describeliving.confirmpublic.ConfirmPublicFragment;
import com.kashow.ui.person.publish.describeliving.describe.DescribeFragment;
import com.kashow.ui.person.publish.describeliving.selectface.SelectFaceFragment;
import com.kashow.ui.person.setting.SettingFragment;
import com.kashow.ui.person.setting.aboutus.AboutUsFragment;
import com.kashow.ui.person.setting.aboutus.contactus.ContactUsFragment;
import com.kashow.ui.person.setting.aboutus.privacy.PrivacyFragment;
import com.kashow.ui.person.setting.bdingphone.BdingPhoneFragment;
import com.kashow.ui.person.setting.clearcache.ClearCacheFragment;
import com.kashow.ui.person.setting.personinformation.PersonInformationFragment;
import com.kashow.ui.person.setting.personinformation.changename.ChangeNameFragment;
import com.kashow.ui.person.wallet.WalletFragment;
import com.kashow.ui.person.wallet.rechange.RechangeFragment;
import com.kashow.ui.person.wallet.withdraw.WithdrawFragment;
import com.kashow.ui.person.wallet.withdraw.finishapply.FinishApplyFragment;
import com.kashow.ui.search.SearchFragment;
import com.kashow.ui.search.searchmore.SearchMoreFragment;
import com.kashow.ui.subscribeall.subthemefragment.SubThemeHomeFragment;
import com.kashow.ui.subscribeall.subthemelist.SubThemListFragmentFragment;
import com.kashow.ui.teacherhome.geniuscircle.GeniusCircleFragment;
import com.kashow.ui.teacherhome.historyliving.HistoryLivingFragment;
import com.kashow.ui.teacherhome.subscribetheme.SubscribeThemeFragment;
import com.kashow.ui.teacherhome.teacherabout.TeacherAboutFragment;
import com.kashow.ui.teacherhome.teachercircle.TeacherCircleFragment;
import com.kashow.ui.teacherhome.teachercode.TeacherCodeFragment;
import com.kashow.ui.teacherhome.teacherfragment.TeacherHomeFragment;

import dagger.Component;


@PerFragment
@Component(modules = FragmentModule.class, dependencies = ApplicationComponent.class)
public interface FragmentComponent {
    @ContextLife("Application")
    Context getContext();

    @ContextLife("Activity")
    Context getActivityContext();

    Activity getActivity();

//    OkHttpClient getOkHttpClient();
//
//    Retrofit getRetrofit();
//
//    ApiService getApiService();
//
//    RxManager getRxManager();
//
//    Socket getSocket();
//
//    UploadManager getUploadManager();
//
//    Providers getProviders();
//
//    Repository getRepository();
//
//    RxQiniuCDN getRxQiniuCDN();
//
//    SecurePreferences getSecurePreferences();
//
//    SocketManager getSocketManager();
//
//    ChatSocketManager getChatSocketManager();

    void inject(MainFragment mainFragment);

    void inject(HomeFragment homeFragment);

    void inject(FollowsLiveFragment followsLiveFragment);

    void inject(ChoicesLiveFragment choicesLiveFragment);

    void inject(CategoryLiveFragment categoryLiveFragment);

    void inject(MessageFragment messageFragment);


    void inject(MessagesFragment messagesFragment);

    void inject(PersonFragment personFragment);


    void inject(ChatFragment chatFragment);

    void inject(LiveCommentFragment liveCommentFragment);

    void inject(LiveDetailFragment liveDetailFragment);
//
//    void inject(PublishedLiveFragment publishLiveFragment);

    void inject(BuyedLiveFragment buyedLiveFragment);

//    void inject(HistoryFragment historyFragment);

    void inject(MessageStarFragment messageStarFragment);

    void inject(CommentFragment commentFragment);
    
    void inject(SearchFragment searchFragment);

    void inject(OfficialFragment officialFragment);

    void inject(ChatListFragment chatListFragment);

    void inject(com.kashow.ui.live.room.ChatFragment chatFragment);

    void inject(WalletFragment walletFragment);

    //充值
    void inject(RechangeFragment rechangeFragment);

    //个人认证
    void inject(AuthenticationFragment authenticationFragment);
   //个人第二页
    void inject(SelfIntroductionFragment selfIntroductionFragment);

    //等级
    void inject(LevelFragment levelFragment);
    //评论老师
    void inject(CommentTeacherFragment commentTeacherFragment);
   //送礼物
    void inject(SendGiftFragment sendGiftFragment);
    //设置
    void inject(SettingFragment settingFragment);

    //隐私
    void inject(PrivacyFragment privacyFragment);

    //个人资料
    void inject(PersonInformationFragment personInformationFragment);

    //关于我们
    void inject(AboutUsFragment aboutUsFragment);


   //联系我们
    void inject(ContactUsFragment contactUsFragment);

    //绑定手机号
     void inject(BdingPhoneFragment bdingPhoneFragment);

    //清除缓存
    void inject(ClearCacheFragment clearCacheFragment);
    //已经预约里面的日历

    //已经预约里面的日历
    void inject(TeacherCodeFragment teacherCodeFragment);

    void inject(PublishedFragment publishFragment);

//    /**
//     * 个人发布的课程
//     * @param courseFragment
//     */
//    void inject(CourseFragment courseFragment);



    void inject(DescribeLivingFragment describeLivingFragment);



    void inject(TeacherHomeFragment teacherHomeFragment);



    //老师历史直播界面
    void inject(HistoryLivingFragment historyLivingFragment);

    //关于老师
    void inject(TeacherAboutFragment teacherAboutFragment);

    //老师圈子
    void inject(TeacherCircleFragment teacherCircleFragment);
    //登录
    void inject(LoginFragment loginFragment);
    //普通登录
    void inject(NormalLoginFragment normalLoginFragment);
    //快捷登录
    void inject(QuickLoginFragment quickLoginFragment);
   //注册
    void inject(RegisterFragment registerFragment);

    //输入两次密码
    void inject(AddPassWordFragment addPassWordFragment);

    //输入姓名和性别
    void  inject(AddNameSexFragment addNameSexFragment);
    //微信登录成功后绑定手机号
    void inject(WXBdingPhoneFragment wxBdingPhoneFragment);

    //分别注入其他页面

    void inject(PublishCircleFragment publishCircleFragment);

    //发布页面的选择封面

    void inject(SelectFaceFragment selectFaceFragment);
    //发布页面的确认发布的弹框

    void inject(ConfirmPublicFragment confirmPublicFragment);

    void inject(DescribeFragment describeFragment);

    void inject(SearchMoreFragment searchMoreFragment);

    void  inject(ProtocolFragment protocolFragment);

    void inject(CircleTextFragment circleTextFragment);


    void inject(PayingFragment payingFragment);

    void inject(SelectMusicFragment selectMusicFragment);

    void inject(BottomFragment bottomFragment);
    /**
     * 发布的课程的展示列表
     * @param courseFragment
     */
    void inject(CourseFragment courseFragment);


    /**
     * 发布文章文章的展示
     * @param articleFragment
     */
    void  inject(ArticleFragment articleFragment);

    void inject(CollectionFragment collectionFragment);

    void inject(SelectCoverFragment selectCoverFragment);

    void inject(QuestionFragment questionFragment);

    void inject(ChangePasswordFragment changePasswordFragment);



    void inject(FinishApplyFragment finishApplyFragment);

    /**
     * 修改姓名
     * @param changeNameFragment
     */
    void inject(ChangeNameFragment changeNameFragment);

    /**
     * 提现申请
     * @param
     */
    void inject(WithdrawFragment withdrawFragment);

    void inject(TeacherQuestionFragment teacherQuestionFragment);

    void inject(AuthStatusFragment authStatusFragment);

    /**
     * 认证失败
     * @param
     */
    void inject(AuthErrorFragment authErrorFragment);


    void inject(CommentReplyFragment commentReplyFragment);

    /**
     * 天才圈
     * @param
     */
    void inject(GeniusCircleFragment geniusCircleFragment);

    /**
     * 作业
     * @param homeworkListFragment
     */
    //void inject(HomeworkListFragment homeworkListFragment);


    void inject(HomeworkListFragment homeworkListFragment);

    /**
     * 作业详情
     * @param homeworkDetailsFragment
     */
    void inject(HomeworkDetailsFragment homeworkDetailsFragment);

    /**
     * 创建作业
     * @param createHomeworkFragment
     */
    void inject(CreateHomeworkFragment createHomeworkFragment);

    /**
     * 订阅专栏
     * @param subscribeThemeFragment
     */
    void inject(SubscribeThemeFragment subscribeThemeFragment);

    /**
     * 订阅专题的主页
     * @param subThemeHomeFragment
     */
    void inject(SubThemeHomeFragment subThemeHomeFragment);


    /**
     * 订阅专题的主页
     * @param homeSubThemeFragment
     */
    void inject(HomeSubThemeFragment homeSubThemeFragment);

    /**
     * 专栏课程列表
     * @param subThemListFragmentFragment
     */
    void inject(SubThemListFragmentFragment subThemListFragmentFragment);


    void inject(CircleFragment circleFragment);




}
